// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/kpdus/jad.html // Decompiler options: braces fieldsfirst space lnc package de.greenrobot.dao.internal; import de.greenrobot.dao.DaoLog; import java.util.Arrays; public final class LongHashMap { private int capacity; private int size; private Entry table[]; private int threshold; public LongHashMap() { this(16); } public LongHashMap(int i) { capacity = i; threshold = (i * 4) / 3; table = new Entry[i]; } public void clear() { size = 0; Arrays.fill(table, null); } public boolean containsKey(long l) { int i = (0x7fffffff & ((int)(l >>> 32) ^ (int)l)) % capacity; for (Entry entry = table[i]; entry != null; entry = entry.next) { if (entry.key == l) { return true; } } return false; } public Object get(long l) { int i = (0x7fffffff & ((int)(l >>> 32) ^ (int)l)) % capacity; for (Entry entry = table[i]; entry != null; entry = entry.next) { if (entry.key == l) { return entry.value; } } return null; } public void logStats() { Entry aentry[] = table; int i = aentry.length; int j = 0; int k = 0; for (; j < i; j++) { for (Entry entry = aentry[j]; entry != null && entry.next != null; entry = entry.next) { k++; } } DaoLog.d((new StringBuilder()).append("load: ").append((float)size / (float)capacity).append(", size: ").append(size).append(", capa: ").append(capacity).append(", collisions: ").append(k).append(", collision ratio: ").append((float)k / (float)size).toString()); } public Object put(long l, Object obj) { int i = (0x7fffffff & ((int)(l >>> 32) ^ (int)l)) % capacity; Entry entry = table[i]; for (Entry entry1 = entry; entry1 != null; entry1 = entry1.next) { if (entry1.key == l) { Object obj1 = entry1.value; entry1.value = obj; return obj1; } } table[i] = new Entry(l, obj, entry); size = 1 + size; if (size > threshold) { setCapacity(2 * capacity); } return null; } public Object remove(long l) { int i = (0x7fffffff & ((int)(l >>> 32) ^ (int)l)) % capacity; Entry entry = table[i]; Entry entry1 = null; do { Entry entry2; label0: { Object obj = null; if (entry != null) { entry2 = entry.next; if (entry.key != l) { break label0; } if (entry1 == null) { table[i] = entry2; } else { entry1.next = entry2; } size = -1 + size; obj = entry.value; } return obj; } entry1 = entry; entry = entry2; } while (true); } public void reserveRoom(int i) { setCapacity((i * 5) / 3); } public void setCapacity(int i) { Entry aentry[] = new Entry[i]; int j = table.length; for (int k = 0; k < j; k++) { Entry entry1; for (Entry entry = table[k]; entry != null; entry = entry1) { long l = entry.key; int i1 = (0x7fffffff & ((int)(l >>> 32) ^ (int)l)) % i; entry1 = entry.next; entry.next = aentry[i1]; aentry[i1] = entry; } } table = aentry; capacity = i; threshold = (i * 4) / 3; } public int size() { return size; } private class Entry { final long key; Entry next; Object value; Entry(long l, Object obj, Entry entry) { key = l; value = obj; next = entry; } } }